﻿using System;
using System.Collections.Generic;
using Domain.MainModule.Entities;

namespace Application.MainModule.RetailRateManagement
{
    public interface IRetailRateManagementService
    {
        /// <summary>
        /// Add new retailRate.
        /// </summary>
        /// <param name="retailRate">RetailRate to be added</param>
        void AddRetailRate(RetailRate retailRate);

        /// <summary>
        /// Change existing retailRate.
        /// </summary>
        /// <param name="retailRate">Existing retailRate to modify.</param>
        void ChangeRetailRate(RetailRate retailRate);

        /// <summary>
        /// Find an retailRate by its Id.
        /// </summary>
        /// <param name="retailRateId">RetailRateId</param>
        /// <returns>An retailRate</returns>
        RetailRate FindRetailRateById(Guid retailRateId);

        /// <summary>
        /// Find an retailRate by branch Id.
        /// </summary>
        /// <param name="branchId">Membership BranchId</param>
        /// <returns>An RetailRate</returns>
        List<RetailRate> FindRetailRateByBranchId(Guid branchId);

        /// <summary>
        /// Find an rateRate by retail Id.
        /// </summary>
        /// <param name="rateId">RateId</param>
        /// <returns>An RetailRate</returns>
        List<RetailRate> FindRetailRateByRateId(Guid rateId);

        /// <summary>
        /// Remove an existing retailRate.
        /// </summary>
        /// <param name="retailRate">The adress to be removed.</param>
        void RemoveRetailRate(RetailRate retailRate);

    }
}
